    
class State():
    def __init__(self, state_name):
        self.__state_name =  state_name
    def __str__(self):
            return self.__state_name
    def __eq__(self, other):
        return self.__state_name == other.__state_name
    
class PCB(object):

    RUNNING = State("Running")
    NEW     = State("New")
    READY   = State("Ready")
    END     = State("End")
    
    id_counter = 0
    
    @staticmethod
    def get_new_id():
        PCB.id_counter += 1
        return PCB.id_counter

    def __init__(self, process_name, innerPriority = 0):
        self.__state          = PCB.NEW
        self.__process_id     = self.get_new_id()
        self.__process_name   = process_name
        self.__context        = None
        self.__inner_priority = innerPriority
        
    @property
    def process_id(self):
        return self.__process_id
    
    @property
    def inner_priority(self):
        return self.__inner_priority
        
    @property
    def context(self):
        return self.__context
    
    @property
    def process_name(self):
        return self.__process_name

    @context.setter
    def context(self, value):
        self.__context = value
        
    @inner_priority.setter
    def inner_priority(self, inner_priority):
        self.__inner_priority = inner_priority

        

        